home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 44
/
Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso
/
Aminet
/
demo
/
mag
/
PowerAmiga3.lha
/
PowerAmiga3
/
ñòàòüè
/
AGAMisc1.txt
next >
Wrap
Text File
|
2001-05-11
|
49KB
|
1,164 lines
<B>Aga Chipset</B>
<B>Part 1</B>
(c) Zetter 2000
2:5025/2000.110
Çäðàâñòâóéòå, óâàæàåìûå ÷èòàòåëè è ïî÷èòàòåëè íàøåãî æóðíàëà.  òðåòèé ðàç
âñòðå÷àåìñÿ ìû ñ âàìè íà ýòèõ ñòðàíèöàõ, è ÿ õî÷ó ñêàçàòü ñïàñèáî Âàì, äîðîãèå
íàøè ÷èòàòåëè! Ñïàñèáî çà îòçûâû è òåïëûå ñëîâà â àäðåñ ðåäàêöèè. Ñïàñèáî çà
êðèòèêó, áåç íåå íåâîçìæíî áûëî-áû ðàçâèòèå è äâèæåíèå âïåðåä è, íàêîíåö,
ñïàñèáî âñåì, êòî ÷èòàåò è èçó÷àåò ýòîò öèêë ñòàòåé, ïîñâÿùåííûé
ïðîãðàììèðîâàíèþ àìèæíîãî æåëåçà. Ìíå ïðèõîäèëè ïèñüìà, è ÿ õî÷ó ñêàçàòü, ÿ
ðàä, ÷òî ýòà ðàáòà ïðèíîñèò ñâîé âêëàä â ðàçâèòèå ïðîãðàììèðîâàíèÿ íà òåððèòðèè
áûâøåãî ÑÑÑÐ. Ñïàñèáî åùå ðàç âñåì, ïèøèòå Âàøè îòçûâû, ïîæåëàíèÿ, ìû âñåãäà
ðàäû Âàøèì ïèñüìàì è ïîñûëêàì :-)
Èòàê, ïîëíñòüþ ðàçîáðàâøèñü ñ ïðîãðàììèðîâàíèåì OSC è ECS ÷èïñåòîâ, â ýòîì
íîìåðå ìû íà÷íåì ïîòèõíüêó îñâàèâàòü AGA. Íà ñàìîì äåëå ïðîãðàììèðîâàíèå AGA
íè÷óòü íå îòëè÷àåòñÿ îò ïðîãðàììèðîâàíèÿ ñòàðûõ ÷èïñåòîâ, ñòîèò òîëüêî ó÷èòûâàòü
è çíàòü íîâûå îñîáåííîñòè è âîçìæíîñòè ÷èïñåòà. Ïîýòîìó, åñëè âû ïðîïóñòèëè èëè
íåäîñòàòî÷íî ïîäðîáíî ðàçîáðàëèñü ñ ïðîãðàììèðîâàíèåì OSC è ECS, ÿ íàñòîÿòåëüíî
ðåêîìåíäóþ ñäåëàòü ýòî äî íà÷àëà ÷òåíèÿ ýòîé è ïîñëåäóþùèõ ñòàòåé, ïîñêîëüêó îíè
áóäóò ñòðîèòüñÿ íà îòëè÷èòåëüíûõ îñîáåííîñòÿõ AGA.
 ýòîì íîìåðå ïðåäñòàâëåíà ïåðâàÿ ÷àñòü ñîáðàííîé èç ðàçëè÷íûõ èñòî÷íèêîâ
èíôîðìàöèè ïî AGA. Ê ÷åòâåðòîìó íîìåðó ÿ íàäåþñü çàâåðøèòü ýòîò öèêë ñòàòåé
ïîëíûì ñïèñêîì âñåõ ðåãèñòðîâ Àìèãè ñ ïîäðîáíûì îáúÿñíåíèåì ôóíêöèé êàæäîãî èç
íèõ.
À òåïåðü, ïåðåä òåì, êàê íà÷àòü, ðàçðåøèòå ìíå ïîçäðàâèòü âñåõ âàñ ñ Íîâûì 2001
Ãîäîì è ïîæåëàòü â ïåðâóþ î÷åðåäü ñ÷àñòüÿ âàì â ëè÷íîé æèçíè, çäîðîâüÿ è
èñïîëíåíèÿ âñåõ ñîêðîâåííûõ æåëàíèé!
<B>Ñ ÍÎÂÛÌ ÃÎÄÎÌ!</B>
<U>ÑÎÄÅÐÆÀÍÈÅ</U>
îáúÿñíåíèå íîâûõ âîçìîæíîñòåé AGA
ñïèñîê íîâûõ ýêðàííûõ ðåæèìîâ AGA ñ ïðèìå÷àíèÿìè
ôîðìàò HAM8
ðàñïîçíàâàíèå AGA (ïðèìåð)
àäàïòàöèÿ êîïïåðëèñòà ê ECS
ðàáîòà ñ:
áèòïëàíàìè
ñêðîëëèíã áèòïëàíîâ ïî 35ns
öâåòîâûìè ðåãèñòðàìè
êîïïåðîì (ïðèìåð)
ñïðàéòàìè:
çàäàíèå (ïðèìåð)
ïåðåìåùåíèå 35 ns
èçìåíåíèå öâåòîâ
superhires
ïåðåêëþ÷åíèå öâåòîâ
VGA
hardware setup (ïðèìåð)
copper list (ïðèìåð)
èñïîëüçîâàíèå ôóíêöèè allocáèòmap
<U>ÎÁÚßÑÍÅÍÈÅ ÍÎÂÛÕ ÎÑÎÁÅÍÍÎÑÒÅÉ</U>
<U>Áèòïëàíû</U>
Òåïåðü â âàøåì ðàñïîðÿæåíèè åñòü 8 áèòïëàíîâ âìåñòî 6.  ðåæèìàõ ñ îäèíî÷íûì
ïëåéôèëäîì äîñòóïíû 256 öâåòîâ âìåñòî 64. Âñå 8 áèòïëàíîâ äîñòóïíû âî âñåõ 3
ðàçðåøàþùèõ ñïîñîáíîñòÿõ.
Êàæäûé ïëåéôèëä â ðåæèìå dual-playfield ìîæåò òåïåðü èìåòü äî 4 áèòïëàíîâ. Äëÿ
êàæäîãî ïëåéôèëäà íåçàâèñèìî âûáèðàåòñÿ 16-òè öâåòíûé áàíê èç 256-òè öâåòíîé
òàáëèöû öâåòîâ.
Òî÷íî òàêæå, âî âñåõ 3 ðàçðåøåíèÿõ äîñòóïåí dual-playfield ðåæèì 4+4 áèòïëàíà,
íî òîëüêî ïðè âûêëþ÷åííîì äóáëèðîâàíèè ñòðîê.  ïðîòèâíîì ñëó÷àå îáà ïëåéôèëäà
ñîâìåñòíî èñïîëüçóþò îäèí è òîò æå ðåãèñòð ìîäóëÿ. Áèòû 15 - 8 ðåãèñòðà BPLCON4
ñîäåðæàò 8 áèòîâûõ ìàñîê, ïîçâîëÿþùèõ îáìåíèâàòü âûâîäèìûå öâåòà îäíîé êîìàíäîé
íå íàðóøàÿ ñîäåðæèìîãî öâåòîâûõ ðåãèñòðîâ.
Äâà äîïîëíèòåëüíûõ ñòàðøèõ áèòà ïîçâîëÿþò ïðîèçâîäèòü áåñøîâíîå ñêðîëëèðîâàíèå
øèðèíîé äî 64 áèò âî âñåõ ðàçðåøåíèÿõ. Øàã ñêðîëëèðîâàíèÿ áèòïëàíà, îêíà
èçîáðàæåíèÿ è ãîðèçîíòàëüíîé ïîçèöèè ñïðàéòà äîñòèã 35ns âî âñåõ ðàçðåøåíèÿõ.
Ðåãèñòð BPLCON1 ñîäåðæèò 8-ìè áèòîâîå çíà÷åíèå çàäåðæêè äëÿ êàæäîãî ïëåéôèëäà ñ
øàãîì ñêðîëëèðîâàíèÿ 35 nSec. (1 SHRES ïèêñåëü), ìîæåò ïðîèçâîäèòüñÿ
ñêðîëëèðîâàíèå â 32 áèòíîì ðåæèìå. Áèòû BPAGEM è BPL32 â íîâîì ðåãèñòðå FMODE
óïðàâëÿþò ðàçìåðîì âûáîðêè äàííûõ áèòïëàíà â BPL1DAT - BPL8DAT.
Ñòàðûé 6 áèòïëàíîâûé ðåæèì HAM, ðàáîòàåò â ðàçðåøåíèÿõ HIRES è SHRES
ðàçðåøàþùèå.
Áèòû BP1-BP4 ñîäåðæàò çíà÷åíèå, ôóíêöèÿ êîòîðîãî îïðåäåëÿåòñÿ ñîäåðæèìåì áèò
BP5 è BP6.
|BP6|BP5| RED | GREEN | BLUE |
|-------------------------------------------------|
| 0 | 0 | âûáîð íîâîãî áàçîâîãî ðåãèñòðà (1 èç 16)|
|-------------------------------------------------|
| 0 | 1 | çàäåðæàòü | çàäåðæàòü | èçìåíèòü |
|-------------------------------------------------|
| 1 | 0 | èçìåíèòü | çàäåðæàòü | çàäåðæàòü |
|-------------------------------------------------|
| 1 | 1 | çàäåðæàòü | èçìåíèòü | çàäåðæàòü |
---------------------------------------------------
Ââåäåí íîâûé ðåæèì HAM. Òåïåðü îí èñïîëüçóåò âñå 8 áèòïëàíîâ. Ýòîò ðåæèì
âûçûâàåòñÿ êîãäà ïîëå BPU ðåãèñòðà BPLCON0 ñîäåðæèò 8, è óñòàíîâëåí áèò HAMEN.
Áèòïëàíû 1 è 2 èñïîëüçóþòñÿ êàê óïðàâëÿþùèå áèòû àíàëîãè÷íî áèòïëàíîì 5 è 6 â
6-òè áèòïëàíîâîì ðåæèìå HAM.
|BP2|BP1| RED | GREEN | BLUE |
|-------------------------------------------------|
| 0 | 1 | âûáîð íîâîãî áàçîâîãî ðåãèñòðà (1 èç 64)|
|-------------------------------------------------|
| 0 | 1 | çàäåðæàòü | çàäåðæàòü | èçìåíèòü |
|-------------------------------------------------|
| 1 | 0 | èçìåíèòü | çàäåðæàòü | çàäåðæàòü |
|-------------------------------------------------|
| 1 | 1 | çàäåðæàòü | èçìåíèòü | çàäåðæàòü |
---------------------------------------------------
Òàê êàê òîëüêî 6 áèòïëàíîâ äîñòóïíû äëÿ èçìåíåíèÿ äàííûõ, äàííûå ðàçìåùàþòñÿ â
6 MSB. 2 LSB îñòàâëåíû íåìîäèôèöèðîâàííûìè, ÷òî ïîçâîëÿåò ÷òî ïîëó÷åíèå âñåõ
16,777,216 öâåòîâ îäíîâðåìåííî, èñïîëüçóÿ äîñòàòî÷íî áîëüøîé ýêðàí è
ðàññóäèòåëüíûé âûáîð áàçîâûõ ðåãèñòðîâ. Ýòîò ðåæèì HAM ðàáîòàåò òàêæå â ðåæèìàõ
HIRES è SHRES.
Ñ öåëüþ ñîâìåñòèìîñòè ðåæèì EHB îñòàëñÿ íåèçìåíåííûì. Åãî ñóùåñòâîâàíèå
ñïîðíîå, ïîñêîëüêó ìû èìååì áîëåå ÷åì äîñòàòî÷íî öâåòîâ, ÷òîáû çàìåíèòü ýòîò
ðåæèì ïî ôóíêöèîíàëüíîñòè. Êàê è ïðåæäå, EHB âûçûâàåòñÿ êîãäà SHRES = HIRES =
HAMEN = DPF = 0 È BPU = 6. Îáðàòèòå âíèìàíèå, ÷òî íà÷èíàÿ ñ ECS DENISE â
ðåãèñòðå BPLCON2 èìååòñÿ áèò KILLEHB, êîòîðûé îòêëþ÷àåò ýòîò ðåæèì.
Áèòû PF2OF2,1,0 â ðåãèñòðå BPLCON3 îïðåäåëÿþò ñìåùåíèå öâåòîâûõ ðåãèñòðîâ
âòîðîãî ïëåéôèëäà â öâåòîâîé òàáëèöå. Ýòî íåîáõîäèìî, ïîñêîëüêó â ðåæèìå DPF
êàæäûé ïëåéôèëä ìîæåò èìåòü äî 4 áèòïëàíîâ.
Äîáàâëåíà âîçìîæíîñòü äóáëèðîâàíèÿ ñòðîê äëÿ áèòïëàíîâ è ñïðàéòîâ. Ýòî
ïðåäíàçíà÷åíî äëÿ òîãî, ÷òîáû ýêðàíû 15KHz ìîãëè ïðàâèëüíî îòîáðàæàòüñÿ íà
ìîíèòîðàõ 31KHz è ñîâìåñòíî èñïîëüçîâàòü äèñïëåé ñ ýêðàíàìè 31KHz.
Áèò BSCAN2 â ðåãèñòðå FMODE âêëþ÷àåò äóáëèðîâàíèå ñòðîê áèòïëàíîâ. Êîãäà áèò V0
ðåãèñòðà DIWSTRT ñîîòâåòñòâóåò áèòó V0 âåðòèêàëüíîãî ñ÷åò÷èêà ëó÷åé, BPL1MOD
ñîäåðæèò ìîäóëü äëÿ ñòðîêè èçîáðàæåíèÿ, èíà÷å èñïîëüçóåòñÿ BPL2MOD. Ïðè
âêëþ÷åííîì äóáëèðîâàíèè ñòðîê íå÷åòíûå è ÷åòíûå áèòïëàíû èñïîëüçóþò îäèí è òîò
æå ìîäóëü íà äàííîé ñòðîêå, â òî âðåìÿ êàê â íîðìàëüíîì ðåæèìå íå÷åòíûå
áèòïëàíû èñïîëüçóþò BPL1MOD, à ÷åòíûå áèòïëàíû èñïîëüçóþò BPL2MOD.  ðåçóëüòàòå
DPF ýêðàíû áóäóò îòîáðàæàòüñÿ íåïðàâèëüíî ïðè âêëþ÷åííîì óäâîåíèè ëèíèé.
<U>Ñïðàéòû</U>
Ðàñøèðåííàÿ ïîääåðæêà ñïðàéòîâ - èõ ðàçðåøåíèå ìîæåò áûòü lores, hires, èëè
super-hires, íåçàâèñèìî îò ðàçðåøåíèÿ ýêðàíà. Îáúåäèíåííûå ñïðàéòû òåïåðü
äîñòóïíû â âñåõ ðåæèìàõ. Îäíàêî, íåêîòîðûå íîâûå ðåæèìû ñ áîëåå âûñîêîé øèðèíîé
ïîëîñû ÷àñòîò ìîãóò òîëüêî îñòàâëÿòü îäèí ñïðàéò. Íå÷åòíûå è ÷åòíûå ñïðàéòû
ìîãóò èñïîëüçîâàòü íåçàâèñèìûå 16 öâåòíûå áàíêè öâåòîâ èç òàáëèöû 256 öâåòîâ.
Ñïðàéòû ñòàðîãî ôîðìàòà èìåëè øèðèíó 16 áèò, à ñïðàéòû íîâîãî ôîðìàòà ìîãóò
èìåòü øèðèíó 32 èëè 64 áèò. Ñïðàéòû ìîãóò îïöèîíàëüíî ïîÿâëÿòüñÿ â áîðäþðíîé
îáëàñòè. Ãîðèçîíòàëüíîå ðàçðåøåíèå ïðè ïîçèöèîíèðîâàíèè ñïðàéòîâ óâåëè÷èëàñü äî
35ns (ýêâèâàëåíòíî øèðèíå super-hires ïèêñåëÿ.)
Áèòû SPAGEM è SPR32 â ðåãèñòðå FMODE çàäàþò ðàçìåð çàãðóçêè ðåãèñòðîâ äàííûõ
ñïðàéòîâ îò SPR0DATA (B) äî SPR7DATA (B). Âîçìîæíûå çíà÷åíèÿ 16,32, èëè 64
áèòà, àíàëîãè÷íî áèòïëàíàì. BPLCON3 ñîäåðæèò íåñêîëüêî áèò, óïðàâëÿþùèõ
ïîâåäåíèåì ñïðàéòîâ. SPRES1 è SPRES0 óïðàâëÿþò ðàçðåøàþùåé ñïîñîáíîñòüþ
ñïðàéòà, ñîîòâåòñòâóþò ëè îíè ñòàíäàðòó ECS èëè íåïîñðåäñòâåííî óñòàòàâëèâàåòñÿ
LORES, HIRES, èëè SHRES. BRDRSPRT, êîãäà âêëþ÷åí, ïîçâîëÿåò ñïðàéòàì áûòü
âèäèìûìè íà áîðäþðå. ESPRM7 - ESPRM4 ñîäåðæàí íîìåð áàíêà äëÿ ÷åòíûõ ñïðàéòîâ,
à OSPRM7 - OSPRM4 äëÿ íå÷åòíûõ.  ñëó÷àå îáúåäèíåííûõ ñïðàéòîâ èñïîëüçóþòñÿ
áèòû OSPRM.
Áèò SSCAN2 â ðåãèñòðå FMODE âêëþ÷àåò äóáëèðîâàíèå ñòðîê ñïðàéòîâ. Âî âêëþ÷åííîì
ñîñòîÿíèè, îòäåëüíûå áèòû SH10 â ðåãèñòðàõ SPRxPOS ñîäåðæàò çíà÷åíèå,
ïîêàçûâàþùåå äîëæíû ëè ñòðîêè äàííîãî ñïðàéòà áûòü ïðîäóáëèðîâàííûìè. Êîãäà áèò
V0 ðåãèñòðà SPRxPOS ñîîòâåòñòâóåò áèòó V0 âåðòèêàëüíîãî ñ÷åò÷èêà ëó÷åé, DMA
ñïðàéòà ðàáîòàåò êàê è ðàíüøå, à åñëè íå ñîîòâåòñòâóåò, òîãäà DMA ñïðàéòà
îòêëþ÷àåòñÿ è LISA ìíîãîêðàòíî èñïîëüçóåò äàííûå ñïðàéòà èç ïðåäûäóùåé ñòðîêè.
Êîãäà ñòðîêè ñïðàéòà ïðîäóáëèðîâàíû, ïðîãðàììèñòó íåîáõîäèìî èçìåíèòü òîëüêî
êîîðäèíàòû è óïðàâëÿþøèå ðåãèñòðû, ðåãèñòðû äàííûõ íå íóæäàþòñÿ â ìîäèôèêàöèè.
ÏÐÈÌÅ×ÀÍÈÅ:
Íà÷àëî è êîíåö ñïðàéòà ïî âåðòèêàëè äîëæíû èìåòü îäíó è òó æå ÷åòíîñòü - òî
åñòü îáà íå÷åòíûé èëè îáà ÷åòíûå.
<U>Ñîâìåñòèìîñòü</U>
ECS ñîâìåñòèìîñòü - Íîâûå ÷èïû ïðè âêëþ÷åíèè ïèòàíèÿ çàïóñêàþòñÿ â ðåæèìå ECS,
÷òî ïîçâîëÿåò ñòàðûì ñàìîçàãðóæàþùèìñÿ ïðîãðàììàì âûïîëíÿòüñÿ íà íîâûõ ìàøèíàõ.
Ýòî âûïîëíåíî ñ ïîìîùüþ $dff1fc FMODE: $0003 = 64-õ áèòíàÿ AGA âûáîðêà, $0000 =
ECS ñîâìåñòèìàÿ âûáîðêà (16 áèò). Ïðè èñïîëüçîâàíèè 4õ èëè 8ìè áèòîâûõ çíà÷åíèé
R/G/B, ìàñøòàáèðóéòå âàøè çíà÷åíèÿ äî 32 áèò äóáëèðóÿ 8ìè áèòîâûå çíà÷åíèÿ â
âñåõ 4 áàéòàõ 32 áèòîâîãî ÷èñëà. Ïðè ìàñøòàáèðîâàíèè 4õ áèòîâûõ çíà÷åíèé,
äóáëèðóéòå ýòè 4 áèòà â âñåõ ïîëóáàéòàõ. Íàïðèìåð: 8ìè áèòíîå çíà÷åíèå êðàñíîãî
$1F ñòàíîâèòñÿ ðàâíûì $1F1F1F1F, à 4õ áèòîâîå çíà÷åíèå $3 ñòàíîâèòñÿ ðàâíûì
$33333333;
Äîáàâèëñÿ âõîä RST, êîòîðûé ñáðàñûâàåò âñå áèòû íîâûõ ðåãèñòðîâ äëÿ ECS èëè
LISA: BPLCON3, BPLCON4, CLXCON2, DIWHIGH, FMODE.
Áèò ECSENA (ïðåæäå ENBPLCN3) èñïîëüçóåòñÿ äëÿ îòêëþ÷åíèÿ íåêîòîðûõ áèò ðåãèñòðà
BPLCON3, êîòîðûå òðåáóþò èñõîäíîãî ñîñòîÿíèÿ äëÿ ñîõðàíåíèÿ ñîâìåñòèìîñòè.
ECSENA âûêëþ÷àåò ñëåäóþùèå áèòû: BRDRBLNK, BRDNTRAN, ZDCLKEN, EXTBLKEN, è
BRDRSPRT.
CLXCON2 ñáðàñûâàåòñÿ ïðè çàïèñè â CLXCON, ïîýòîìó ñòàðûå èãðîâûå ïðîãðàììû
áóäóò ïðàâèëüíî îáðàáàòûâàòü ñòîëêíîâåíèÿ îáúåêòîâ.
DIWHIGH ñáðàñûâàåòñÿ ïðè çàïèñè â DIWSTRT èëè DIWSTOP. Ýòà âçàèìíàÿ áëîêèðîâêà
óíàñëåäîâàíà èç ECS Denise.
<U>Ãåíëîê</U>
Áîëüøîå êîëè÷åñòâî íîâûõ âîçìîæíîñòåé äîáàâèëèñü ê ECS DENISE è îñòàëèñü â
LISA. ZDBPEN â BPLCON2 ëþáîìó áèòïëàíó, âûáðàííîìó â ZDBPSEL2,1,0
èñïîëüçîâàòüñÿ â êà÷åñòâå ìàñêè ïðîçðà÷íîñòè (ñîäåðæàíèå âåâîäîâ ZD îòðàæàåò
âûáðàííûé áèòïëàí). ZDCTEN îòêëþ÷àåò ñòàðûé ðåæèì ïðîçðà÷íîñòè öâåò00, è
ïîçâîëÿåò ÷òî èñïîëüçîâàòü áèò31 êàæäîãî öâåòà â ïàëèòðå äëÿ óïðàâëåíèÿ
ïðîçðà÷íîñòüþ. ZDCLKEN ãåíåðèðóåò ñèãíàë ÷àñòîòîé 14MHz, ñèíõðîíèçèðîâàííûé ñ
âèäåîäàííûìè êîòîðûé ìîæåò èñïîëüçîâàòüñÿ âèäåî ïîñòïðîöåññîðàìè. È íàêîíåö,
BRDNTRAN â BPLCON3 ãåíåðèðóåò íåïðîçðà÷íóþ áîðäþðíóþ îáëàñòü, êîòîðàÿ ìîæåò
èñïîëüçîâàòüñÿ êàê ðàìêà äëÿ æèâîãî âèäåî.
<U>Ïàëèòðà</U>
Öâåòîâûå ðåãèñòðû âûðîñëè îò 32-õ 13-òè áèòíûõ ðåãèñòðîâ äî 256-òè 25-òè áèòíûõ
(8 áèò ÊÐÀÑÍÛÉ, 8 - ÇÅËÅÍÛÉ, 8 - ÑÈÍÈÉ, ïëþñ 1 áèò äëÿ Ãåíëîêà). Ýòî ïîçâîëÿåò
èçîáðàæàòü äî 256 îòäåëüíûõ öâåòîâ â âñåõ ðàçðåøåíèÿõ. Ïàëèòðà â 16,777,216
öâåòîâ äîñòóïíà â âñåõ ðàçðåøåíèÿõ. Ê ðåãèñòðó BLPCON3 äîáàâèëèñü íåñêîëüêî
íîâûõ áèòîâ äëÿ îáåñïå÷åíèÿ çàãðóçêè öâåòîâûõ ðåãèñòðîâ. Áèò LOCT âûáèðàåò MSB
èëè LSB (Ñòàðøóþ èëè ìëàäøóþ ïîëîâèíêó ðåãèñòðà). Äëÿ ñîâìåñòèìîñòè çàãðóçêà
MSB âñåãäà çàãðóæàåò LSB, ò.å. äëÿ çàãðóçêè 24 áèòîâîãî öâåòà LSB äîëæåí
çàãðóæàòüñÿ ïîñëå MSB. BANK2,1,0 âûáèðàåò îäèí èç 8 áàíêîâ àäðåñîâ öâåòîâûõ
ðåãèñòðîâ (ïî 32 ðåãèñòðà) ñëåäóþùèì îáðàçîì:
BANK2 | BANK1 | BANK0 | ÈÍÒÅÐÂÀË ÖÂÅÒÎÂ
--------------------------------------------
0 | 0 | 0 | öâåò00 - öâåò1F
0 | 0 | 1 | öâåò20 - öâåò3F
0 | 1 | 0 | öâåò40 - öâåò5F
0 | 1 | 1 | öâåò60 - öâåò7F
1 | 0 | 0 | öâåò80 - öâåò9F
1 | 0 | 1 | öâåòA0 - öâåòBF
1 | 1 | 0 | öâåòC0 - öâåòDF
1 | 1 | 1 | öâåòE0 - öâåòFF
Áèò RDRAM áèò â ðåãèñòðå BPLCON2 çàñòàâëÿåò LISA èíòåðïðåòèðîâàòü âñå îáðàùåíèÿ
ê öâåòîâûì ðåãèñòðàì êàê ÷òåíèå.
Âàæíîå çàìå÷àíèå îòíîñèòåëüíî ×ÈÑËÀ ÖÂÅÒÎÂ: Ñòàðûé IFF êîä (è äàæå ðàííèå
âåðñèè NewIFF) íå áóäåò çàãðóæàòü áîëåå 32 öâåòîâûõ ðåãèñòðîâ. Íîâûå âåðñèè
áûëè ìîäèôèöèðîâàíû. Òåïåðü âåðõíÿÿ ãðàíèöà êîëè÷åñòâà öâåòîâ áàçèðóåòñÿ íà
öâåòMap->Count â ViewPort . Óäàëèòå ñòàðûå îãðàíè÷åíèÿ íà 32 ðåãèñòðà è
óñòàíîâèòå íîâîå îãðàíè÷åíèå íà öâåòMap->Count.
<U>Ñòîëêíîâåíèÿ</U>
Íîâûé ðåãèñòð CLXCON2 ñîäåðæèò 4 íîâûõ áèòà. ENBP7 è ENBP8 - áèòû ðàçðåøåíèÿ
îïðåäåëåíèÿ ñòîëêíîâåíèé äëÿ áèòïëàíîâ 7 è 8, ñîîòâåòñòâåííî. Àíàëîãè÷íî, MVBP7
è MPBP8 - áèòû çíà÷åíèÿ ñòîëêíîâåíèÿ. CLXDAT íåèçìåíåí.
<U>Ãîðèçîíòàëüíûå Êîìïàðàòîðû</U>
Âñå ïðîãðàììèðóåìûå êîìïàðàòîðû çà èñêëþ÷åíèåì VHPOSW èìåþò ðàçðåøàþùóþ
ñïîñîáíîñòü 35nSec: DIWHIGH, HBSTOP, SPRCTL, BPLCON1. BPLCON1 òàêæå èìååò
äîïîëíèòåëüíûå ñòàðøèå áèòû. Îáðàòèòå Âíèìàíèå ÷òî áèòîâàÿ ïîçèöèÿ
ïðåäñòàâëÿþùàÿ ãîðèçîíòàëüíîå ðàçðåøåíèå 140 nSec èçìåíèëàñü íà 3-é ìëàäøèé
áèò. Íàïðèìåð, áèò 00 â BPLCON1 íàçûâàëñÿ PF1H0, à òåïåðü íàçûâàåòñÿ PF1H2.
<U>Ïðèâåäåíèå 15KHz ê 31KHz:</U>
Ê LISA äîáàâëåíû âîçìîæíîñòè äëÿ òîãî, ÷òîáû ïðàâèëüíî èçîáðàæàòü âìåñòå ýêðàíû
15KHz è 31KHz íà ìîíèòîðå ñ ÷àñòîòîé 31KHz. LISA ìîæåò ãëîáàëüíî óñòàíàâëèâàòü
ðàçðåøåíèå ñïðàéòîâ â LORES, HIRES èëè SHRES. Ïðè äóáëèðîâàíèè ñòðîê LISA
èãíîðèðóåò áèò SH10 â ðåãèñòðå SPRxPOS, èñïîëüçóÿ åãî äëÿ èíäèâèäóàëüíîãî
óïðàâëåíèÿ äóáëèðîâàíèåì ñòðîê ñïðàéòîâ.
<U>Íîâûå ýêðàííûå ðåæèìû AGA</U>
Ðåæèì Áèòïëàíîâ Öâåòîâ Øèðèíà âûáîðêè (Ñì. ïðèìå÷àíèå 1)
----- --------- ------ ---------------------------------
LORES (320x200)
6 64 (íå HAM, íå EHB) 1 (Óñòàíîâèòå KillEHB!)
7 128 1
8 256 1
8 HAM 256,000+(ñì ïðèì. 2) 1
Dual playfield: Ìàêñèìóì 4 áèòïëàíà íà ïëåéôèëä, 16 öâåòîâ íà ïëåéôèëä. Äëÿ
êàæäîãî ïëåéôèëäà íîæåò âûáèðàòüñÿ áàíê â 16 öâåòîâ èç ïàëèòðû â 256 öâåòîâ.
HIRES (640x200)
5 32 2
6 EHB 64 (ñì ïðèì. 3) 2
6 HAM 4096 (ñì ïðèì. 4) 2
6 64 (óñòàíîâ. killEHB) 2
7 128 2
8 256 2
8 HAM 256,000+(ñì ïðèì. 2) 2
Dual playfield: Ìàêñèìóì 4 áèòïëàíà íà ïëåéôèëä, 16 öâåòîâ íà ïëåéôèëä. Äëÿ
êàæäîãî ïëåéôèëäà íîæåò âûáèðàòüñÿ áàíê â 16 öâåòîâ èç ïàëèòðû â 256 öâåòîâ.
SUPERHIRES (1280x200)
1 2 (ñì ïðèì. 5) 1
2 4 (ñì ïðèì. 5) 1
3 8 2
4 16 2
5 32 4
6 EHB 64 (ñì ïðèì. 3) 4
6 HAM 4096 (ñì ïðèì. 4) 4
6 64 (óñòàíîâ. KillEHB) 4
7 128 4
8 256 4
8 HAM 256,000+(ñì ïðèì. 2) 4
Dual playfield: Ìàêñèìóì 4 áèòïëàíà íà ïëåéôèëä, 16 öâåòîâ íà ïëåéôèëä. Äëÿ
êàæäîãî ïëåéôèëäà íîæåò âûáèðàòüñÿ áàíê â 16 öâåòîâ èç ïàëèòðû â 256 öâåòîâ.
VGA (160,320,640x480 íå èíòåðë. 31Khz - íóæåí VGA èëè ìóëüòèñèíê ìîíèòîð)
1 2 (ñì ïðèì. 5) 1
2 4 (ñì ïðèì. 5) 1
3 8 2
4 16 2
5 32 4
6 EHB 64 (ñì ïðèì. 3) 4
6 HAM 4096 (ñì ïðèì. 4) 4
6 64 (óñòàíîâ. KillEHB) 4
7 128 4
8 256 4
8 HAM 256,000+(ñì ïðèì. 2) 4
Dual playfield: Ìàêñèìóì 4 áèòïëàíà íà ïëåéôèëä, 16 öâåòîâ íà ïëåéôèëä. Äëÿ
êàæäîãî ïëåéôèëäà íîæåò âûáèðàòüñÿ áàíê â 16 öâåòîâ èç ïàëèòðû â 256 öâåòîâ.
Super 72 (848x614 èíòåðëåéñ, êàäðîâàÿ ÷àñòîòà 70 Hz)
1 2 êàê ECS, íî áåç ðàçìàç. öâåòîâ 1
2 4 êàê ECS, íî áåç ðàçìàç. öâåòîâ 1
3 8 öâåòîâ 2
4 16 öâåòîâ 2
5 32 öâåòîâ 4
6 64 öâåòîâ (óñòàíîâ. KillEHB) 4
7 128 öâåòîâ 4
8 256 öâåòîâ 4
6 EHB 32 * 2 öâåòîâ 4
6 HAM 4O96 öâåòîâ 4
8 HAM ëþáîé èç 2^24 öâåòîâ 4
Dual playfield: Ìàêñèìóì 4 áèòïëàíà íà ïëåéôèëä, 16 öâåòîâ íà ïëåéôèëä. Äëÿ
êàæäîãî ïëåéôèëäà íîæåò âûáèðàòüñÿ áàíê â 16 öâåòîâ èç ïàëèòðû â 256 öâåòîâ.
Ñêðîëëèðîâàíèå âñåõ ïëåéôèëäîâ - òåïåðü ñ øàãîì 35ns. Ðàíåå øàã áûë 140ns.
Äèàïàçîíû ñêðîëëèðîâàíèÿ, ïðîãðàììèðóåìûå â BPLCON1
+-----------+----------------+----------------+
| Ðåæèìû 1X | LORES Ïèêñåëåé | SHRES Ïèêñåëåé |
+-----------+----------------+----------------+
| LORES | 0-15 | 0-63 |
| HIRES | 0-7 | 0-31 |
| SHRES | 0-3 | 0-15 |
+-----------+----------------+----------------+
+-----------+----------------+----------------+
| Ðåæèìû 2X | LORES Ïèêñåëåé | SHRES Ïèêñåëåé |
+-----------+----------------+----------------+
| LORES | 0-31 | 0-127 |
| HIRES | 0-15 | 0-63 |
| SHRES | 0-7 | 0-31 |
+-----------+----------------+----------------+
+-----------+----------------+----------------+
| Ðåæèìû 4X | LORES Ïèêñåëåé | SHRES Ïèêñåëåé |
+-----------+----------------+----------------+
| LORES | 0-63 | 0-255 |
| HIRES | 0-31 | 0-127 |
| SHRES | 0-15 | 0-63 |
+-----------+----------------+----------------+
Ïðèìå÷àíèÿ:
1 - Øèðèíà âûáîðêè çàäàåò øèðèíó âûáîðêè äàííûõ èç ïàìÿòè, íåîáõîäèìóþ äëÿ
îïðåäåëåííîãî ýêðàííîãî ðåæèìà. Íàïðèìåð, VGA ýêðàí, ãëóáèíîé 5 áèò òðåáóåò
ðåæèìà 4x, à VGA ýêðàí, ãëóáèíîé 1 áèò - ðåæèìà 1x. Ðåæèì 4õ îáåñïå÷èâàåò
ïåðåäà÷ó äàííûõ â 4 ðàçà áûñòðåå, ÷åì 1õ. Äëÿ îáåñïå÷åíèÿ ïðàâèëüíîé âûáîðêè
äàííûõ ñòàðøèå ðåæèìû âûáîðêè òðåáóþò ïðàâèëüíîãî âûðàâíèâàíèÿ äàííûõ â ïàìÿòè.
Ðåæèì 1õ òðåáóåò âûðàâíèâàíèÿ ïî ãðàíèöàì ñëîâ, ðåæèìû 2õ - ïî ãðàíèöàì äëèííûõ
ñëîâ, à ðåæèìû 4õ - ïî ãðàíèöàì êâàäðî ñëîâ èëè, ãîâîðÿ èíûìè ñëîâàìè - ïî 16,
32 èëè 64 áèòà. Ïîäîáíûå òðåáîâàíèÿ - ëó÷øèé ïîâîä èñïîëüçîâàòü ñèñòåìíûå
ôóíêöèè çàõâàòà ïàìÿòè. Îäíàêî íå ãàðàíòèðóåòñÿ ÷òî âñå ìàøèíû, èìåþùèå íîâûé
÷èïñåò èìåþò äîñòàòî÷íî áûñòðóþ ïàìÿòü, ÷òîáû îáåñïå÷èâàòü ðåèìû 4x.
Ñëåäîâàòåëüíî, åäèíñòâåíûé ñïîñîá óçíàòü, áóäåò ëè ìàøèíà ïîääåðæèâàòü äàííûé
ðåæèì - ýòî ïðîâåðèòü Ýêðàííóþ Áàçó Äàííûõ.
* BANDWIDTH 1: MOVE.W #0,$DFF1FC
* BANDWIDTH 2: MOVE.W #2,$DFF1FC ;Áèòìàï, âûðîâíåíûé ïî 32 áèòàì è
;MODULO = MODULO-4
* BANDWIDTH 4: MOVE.W #3,$DFF1FC ;Áèòìàï, âûðîâíåíûé ïî 64 áèòàì è
;MODULO = MODULO-8
Ýòà òàáëèöà ïîêàçûâàåò òîëüêî ìèíèìàëüíî òðåáóþùèéñÿ ðåæèì âûáîðêè äëÿ êàæäîãî
ýêðàííîãî ðåæèìà.
Âû äîëæíû âñåãäà ïûòàòüñÿ óñòàíàâëèâàòü ìàêñèìàëüíî øèðîêóþ âûáîðêó åñëè ýòî
âîçìîæíî.
2 - Íîâûé 8-ìè áèòîâåé ðåæèì HAM èñïîëüçóåò âåðõíèå 6 áèò óêàçàíàÿ íà îäèí èç
64 áàçîâûõ 24õ áèòíûõ ðåãèñòðîâ èëè êàê 6òè áèòíîå çíà÷åíèå èçìåíåíèÿ òåêóùåãî
çíà÷åíèÿ, à ìëàäøèå 2 áèòà èñïîëüçóþòñÿ êàê êîìàíäà.  ýòîì ðåæèìå âîçìîæíî
îäíîâðåìåííîå èçîáðàæåíèå áîëåå 256,000 öâåòîâ (à åñëè íà ýêðàíå èìååòñÿ
äîñòàòî÷íîå êîëè÷åñòâî ïèêñåëåé, òî è äî 16.8 ìèëëèîíîâ öâåòîâ). Îáðàòèòå
âíèìàíèå íà òî, ÷òî õîòÿ ðåãèñòðîâûå è óïðàâëÿþùèå áèòïëàíû ïîìåíÿëèñü ìåñòàìè,
(Óïðàâëÿþùèå áèòû òåïåðü ìëàäøèå, à íå ñòàðøèå), ïðîãðàììû èñïîëüçóþùèå
graphics.library è intuition.library íå äîëæíû îáðàùàòü íà ýòî âíèìàíèå,
ïîñêîëüêó âñå ýòî îáðàáàòûâàåòñÿ àâòîìàòè÷åñêè.
3 - Ýòîò ðåæèì ïîäîáåí ñòàðîìó ðåæèìó EHB, íî â íîâûõ ðàçðåøåíèÿõ. Ýòîò ðåæèì
èñïîëüçóåò 5 áèòïëàíîâ äëÿ ïîëó÷åíèÿ 32 öâåòîâ, ïëþñ øåñòîé áèòïëàí äëÿ 32
öâåòîâ ñ ïîëîâèííîé ÿðêîñòüþ.
4 - Ýòîò ðåæèì ïîäîáåí ñòàðîìó ðåæèìó HAM, íî â íîâûõ ðàçðåøåíèÿõ. Îí
èñïîëüçóåò ìëàäøèå 4 áèòà äëÿ óêàçàíèÿ 16 öâåòîâûõ ðåãèñòðîâ èëè çíà÷åíèÿ
èçìåíåíèÿ è ñòàðøèå 2 áèòà êîìàíäû. Â ýòîì ðåæèìå äîñòóïíî èõîáðàæåíèÿ
îäíîâðåìåííî 4096 öâåòîâ.
5 - Ýòè ðåæèìû - â îòëè÷èå îò ñòàðûõ ðåæèìîâ VGA è SUPERHIRES íå îãðàíè÷åíû
íåñòàíäàðòíîé 64õ öâåòíîé ïàëèòðîé.
*******************************************************************************
<U>Ôîðìàò HAM-8</U>
Ham-8 èñïîëüçóåò *íèæíèå* äâà áèòà â êà÷åñòâå êîìàíäû (âûáîð íîâîãî ðåãèñòðà
èëè èçìåíåíèå Êðàñíîé, Çåëåíîé èëè Ñèíåé êîìïîíåíò, êàê è â ñòàíäàðòå HAM), è
*âåðõíèå* 6 áèò ( ïëàíû 2 - 7 ) êàê íîìåð ðåãèñòðà (0 - 63), èëè êàê 6òè
áèòîâîå çíà÷åíèå hold-and-modify äëÿ èçìåíåíèÿ âåðõíèõ 6 áèò 8ìè áèòíîãî
öâåòîâîãî çíà÷åíèÿ.
Ñàìûå ìëàäøèå äâà áèòà öâåòîâîãî çíà÷åíèÿ íå èçìåíÿþòñÿ, òàê ÷òî íà÷àëüíàÿ
ïàëèòðà äîëæíà âûáèðàòüñÿ îñòîðîæíî (íàïðèìåð, èñïîëüçóÿ AdPro èëè ÷òî-íèáóäü
åùå, ÷òî äåëàåò ýòî ëó÷øå)
<U>Ïðîãðàììèðîâàíèå AGA ÷èïñåòà</U>
Ïðîãðàììà îáíàðóæåíèÿ ÷èïñåòà AGA
Ýòà ïðîãðàììà ïîçâîëÿåò îáíàðóæèòü íàëè÷èå ÷èïñåòà AGA íà 101 %... (Çà
ïîñëåäíèé ïðîöåíò ñïàñèáî DDT/HBT). Ýòà ïðîãðàììà áóäåò îáíàðóæèâàòü AGA íà
áóäóùèõ ìîäèôèöèêàöèÿõ AGA ìàøèí. Âçàìåí ñîçäàíèå CMPI.B $f8,$dff07c.) íà òåõ
íîâûõ AGA ìàøèíàõ òîëüêî ñòàðûé ÷èïñåò áóäåò îáíàðóæåí !!!!
AGA DETECT ROUTINE:
This is my AGA detect routine 101%... (thanx to DDT/HBT for the last 1%) It
will detect AGA on the future updated AGA machines. Instead making a CMPI.B
#$f8,$dff07c on that new AGA machines only old chipset will be detected!!!!
LEA $DFF000,A5
MOVE.W $7C(A5),D0 ; Ïðîâåðêà DeniseID èëè LisaID íà AGA
MOVEQ #30,D2 ; Ïðîâåðÿåì 30 ðàç (íà ñòàðîé denise ñëó÷àéíîé ÷èñëî)
ANDI.W #%000000011111111,d0 ; òîëüêî ìëàäøèé áàéò
DENLOOP:
MOVE.W $7C(A5),D1 ; Denise ID (LisaID íà AGA)
ANDI.W #%000000011111111,d1 ; òîëüêî ìëàäøèé áàéò
CMP.B d0,d1 ; òàêîå-æå çíà÷åèíå?
BNE.S NOTAGA ; íåò, çíà÷èò OCS Denise!
DBRA D2,DENLOOP ;
ORI.B #%11110000,D0 ; ìàñêèðóåì âåðñèþ AGA
CMPI.B #%11111000,D0 ; áèò 3=AGA (ýòîò áèò áóäåò =0 â AAA!)
BNE.S NOTAGA ; AGA ïðèñóòñòâóåò?
ST.B AGA ; Óñòàíàâëèâàåì AGA ôëàã.
NOTAGA: ; íå AGA, íî âîçìîæíî AAA ÷èïñåò!
Ìíå ïîòðåáîâàëîñü èñïðàâèòü áîëüøå 3 AGA äåìîê, êîòîðûå íà ìîåé À4000 ãîâîðèëè:
YOU NEED AN AGA MACHINE (!!)... ýòè äåìêè: NOP 1/muffbusters,
RedNexRevivalIntro (ñ ïëîõèì òåñòîì ïðîöåññîðà) è äðóãèå..
***************************************************************************
Äëÿ òîãî, ÷òîáû ñäåëàòü äåìî äëÿ îáû÷íîé Àìèãè ðàáîòîñïîñîáíûì íà ÷èïñåòå AGA
âñòàâüòå ñëåäóþùèå ñòðî÷êè â Âàø êîïïåðëèñò:
dc.w $106,$c00 ;Âûêëþ÷åíèå AGA ñïðàéòîâ, ïàëèòðû è DPF
dc.w $1FC,0 ;Âûêëþ÷åíèå AGA âûáîðêè äëÿ ñïðàéòîâ è áèòïëàíîâ.
È íå çàáóäüòå óñòàíàâëèâàòü çíà÷åíèÿ BPL1MOD($108), BPL2MOD($10a), DIWSTRT($8e)
è DIWSTOP($90), èíà÷å Âû áóäåòå ïîëó÷àòü çíà÷åíèÿ, èñïîëüçóåìûå â WB.
*******************************************************************************
Áèòïëàíû:
Îò 0 äî 7 áèòïëàíîâ óñòàíàâëèâàþòñÿ êàê è ïðåæäå â ðåãèñòðå BPLCON0 ($dff100).
Âîñåìü áèòïëàíîâ óñòàíàâëèâàþòñÿ óñòàíîâêîé áèòà 4 ðåãèñòðà BPLCON0, áèòû 12-14
äîëæíû áûòü 0
Äëÿ Hires ïðè 8 áèòïëàíàõ íå çàáóäüòå óñòàíîâèòü áèòû 0 è 1 ðåãèñòðà FMODE
($dff1fc)
8 áèòïëàíîâ:
×èñëî èñïîëüçóåìûõ áèòïëàíîâ îïðåäåëÿåòñÿ áèòàìè 12-14 ðåãèñòðà BPLCON0.
Ïîñêîëüêó äëÿ ýòîé öåëè èìååòñÿ âñåãî 3 áèòà íåâîçìîæíî áûëî èñïîëüçîâàòü
áîëüøå 7 áèòïëàíîâ. Äëÿ èñïîëüçîâàíèÿ 8 áèòïëàíîâ ââåäåí ñïåöèàëüíûé áèò - áèò
4. Ïðè åãî èñïîëüçîâàíèè íå çàáóäüòå îáíóëèòü áèòû 12-14 äëÿ áóäóùåé
ñîâìåñòèìîñòè :)
áèò 4 | 8 áèòïëàíîâ
------------------------
0 | íå âûáðàíî
------------------------
1 | âûáðàíî
------------------------
Èñïîëüçîâàíèå 64õ-öâåòíîãî ðåæèìà (íå EHB) òðåáóåò óñòàíîâêè áèòà KILLEHB (áèò
9) â ðåãèñòðå BPLCON2
Ãëàäêèé Ñêðîëëèíã
Ê ðåãèñòðó BPLCON1 äîáàâëåíû äîïîëíèòåëüíûå áèòû, ïîçâîëÿþùèå îñóùåñòâëÿòü
áîëåå ïðàâíûé ñêðîëëèíã áîëüøåé îáëàñòè.
Áèòû 8 (PF1H0) è 9 (PF1H1) - íîâûå áèòû ïðîêðóòêè âûñîêîãî ðàçðåøåíèÿ äëÿ
ïåðâîãî ïëåéôèëäà, à áèòû 12 (PF2H0) è 13 (PF2H1) - íîâûå áèòû äëÿ âòîðîãî
ïëåéôèëäà.
Åùå ïî äâà áèòà äîáàâëåíû ê êàæäîìó ïëåéôèëäó äëÿ îáåñïå÷åíèÿ ìàêñèìàëüíîãî
ðàññòîÿíèÿ ñêðîëëèðîâàíèÿ, ðàâíîãî 64 ïèêñåëÿì íèçêîãî ðàçðåøåíèÿ èëè 256
ïèêñåëÿì â SHires (âìåñòî 16 ïèêñåëåé íèçêîãî ðàçðåøåíèÿ) Ýòî áèòû 10 (PF1H6) è
11 (PF1H7) äëÿ ïåðâîãî ïëåéôèëäà è áèòû 14 (PF2H6) è 15 (PF2H7) äëÿ âòîðîãî
ïëåéôèëäà.
Îáû÷íûé ðåæèì îñòàåòñÿ ðàáîòîñïîñîáåí, à äëÿ âêëþ÷åíèÿ íîâûõ âîçìîæíîñòåé êðîìå
óñòàíîâêè íîâûõ áèò íåîáõîäèìî èñïîëüçîâàòü øèðèíó âûáîðêè 2õ èëè 4õ.
*******************************************************************************
Öâåòîâûå Ðåãèñòðû:
Òåïåðü èìåþòñÿ 256 öâåòîâûõ ðåãèñòðîâ, äîñòóï ê êîòîðûì îñóùåñòâëÿåòñÿ
ïîñðåäñòâîì ñòàðûõ 32 ðåãèñòðîâ.
AGA ðàáîòàåò ñ 8 ðàçëè÷íûìè ïàëèòðàìè ïî 32 öâåòà â êàæäîé, ìíîãîêðàòíî
èñïîëüçóÿ öâåòîâûå ðåãèñòðû öâåò00 - öâåò31 ($0180 - $01BE).
Òåêóùàÿ ïàëèòðà âûáèðàåòñÿ èñïîëüçóÿ áèòû BANK0-BANK2 (13-15) ðåãèñòðà BPLCON3
($0106)
áèò 15 | áèò 14 | áèò 13 | Âûáðàííàÿ ïàëèòðà
-------+--------+--------+------------------------------
0 | 0 | 0 | Ïàëèòðà 0 (öâåòà 0 - 31)
0 | 0 | 1 | Ïàëèòðà 0 (öâåòà 32 - 63)
0 | 1 | 0 | Ïàëèòðà 0 (öâåòà 64 - 95)
0 | 1 | 1 | Ïàëèòðà 0 (öâåòà 96 - 127)
1 | 0 | 0 | Ïàëèòðà 0 (öâåòà 128 - 159)
1 | 0 | 1 | Ïàëèòðà 0 (öâåòà 160 - 191)
1 | 1 | 0 | Ïàëèòðà 0 (öâåòà 192 - 223)
1 | 1 | 1 | Ïàëèòðà 0 (öâåòà 224 - 255)
*******************************************************************************
×òîáû çàïèñàòü 24-õ áèòíîå çíà÷åíèå â öâåòîâîé ðåãèñòð òðåáóåòñÿ äâå çàïèñè â
ðåãèñòðû:
- Ñíà÷àëà î÷èñòèòå áèò 9 (LOCT) ðåãèñòðà BPLCON3 ($dff106).
- Çàïèøèòå ñòàðøèå ïîëóáàéòû êàæäîãî öâåòà â öâåòîâûå ðåãèñòðû.
- Çàòåì óñòàíîâèòå áèò 9 (LOCT) ðåãèñòðà BPLCON3 ($dff106).
- Çàïèøèòå ìëàäøèå ïîëóáàéòû êàæäîãî öâåòà â öâåòîâûå ðåãèñòðû.
áèò 9 | Äîñòóï ê:
------------------------------
0 | 4 ñòàðøèì áèòàì R,G,B
------------------------------
1 | 4 ìëàäøèì áèòàì R,G,B
------------------------------
Âû äîëæíû ñîáëþäàòü ïîðÿäîê çàïèñè: ñíà÷àëà çàïèñûâàåì 3 * 4 ÑÒÀÐØÈÕ ÁÈÒ, à
çàòåì 3 * 4 ÌËÀÄØÈÕ ÁÈÒ!
Íàïðèìåð, ÷òîáû çàìåíèòü íóëåâîé öâåò íà öâåò $123456
$01060000 dc.l
$01800135 dc.l
$01060200 dc.l
$01800246 dc.l
Åñëè âû èñïîëüçóåòå öâåòà 12-òè áèòíûé öâåò, ðàññìàòðèâàþòñÿ òîëüêî ñòàðøèå
áèòû êàæäîé èç öâåòîâûõ êîìïîíåíò (RGB).
ÏÐÈÌÅÐ ÊÎÏÏÅÐËÈÑÒÀ ÄËß AGA
DC.W $106,$c00 ;Âûáèðàåì ïàëèòðó 0 (0-31), ñòàðøèå ïîëóáàéòû
COLP0:
DC.W $180,$000,$182,$000,$184,$000,$186,$000 ;Ñòàðøèå ïîëóáàéòû
DC.W $188,$000,$18A,$000,$18C,$000,$18E,$000 ;öâåòîâ 0-31
DC.W $190,$000,$192,$000,$194,$000,$196,$000 ;
DC.W $198,$000,$19A,$000,$19C,$000,$19E,$000 ;
DC.W $1A0,$000,$1A2,$000,$1A4,$000,$1A6,$000
DC.W $1A8,$000,$1AA,$000,$1AC,$000,$1AE,$000
DC.W $1B0,$000,$1B2,$000,$1B4,$000,$1B6,$000
DC.W $1B8,$000,$1BA,$000,$1BC,$000,$1BE,$000
DC.W $106,$e00 ;Âûáèðàåì ïàëèòðó 0 (0-31), ìëàäøèå ïîëóáàéòû
COLP0B:
DC.W $180,$000,$182,$000,$184,$000,$186,$000 ;Ìëàäøèå ïîëóáàéòû
DC.W $188,$000,$18A,$000,$18C,$000,$18E,$000 ;öâåòîâ 0-31
DC.W $190,$000,$192,$000,$194,$000,$196,$000 ;
DC.W $198,$000,$19A,$000,$19C,$000,$19E,$000 ;
DC.W $1A0,$000,$1A2,$000,$1A4,$000,$1A6,$000
DC.W $1A8,$000,$1AA,$000,$1AC,$000,$1AE,$000
DC.W $1B0,$000,$1B2,$000,$1B4,$000,$1B6,$000
DC.W $1B8,$000,$1BA,$000,$1BC,$000,$1BE,$000
DC.W $106,$2C00 ;Âûáèðàåì ïàëèòðó 1 (31-63), ñòàðøèå ïîëóáàéòû
COLP1:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$2E00 ;Âûáèðàåì ïàëèòðó 1 (31-63), ìëàäøèå ïîëóáàéòû
COLP1B:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$4C00 ;Âûáèðàåì ïàëèòðó 2 (64-95), ñòàðøèå ïîëóáàéòû
COLP2:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$4E00 ;Âûáèðàåì ïàëèòðó 2 (64-95), ìëàäøèå ïîëóáàéòû
COLP2B:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$6C00 ;Âûáèðàåì ïàëèòðó 3 (96-127), ñòàðøèå ïîëóáàéòû
COLP3:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$6E00 ;Âûáèðàåì ïàëèòðó 3 (96-127), ìëàäøèå ïîëóáàéòû
COLP3B:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$8C00 ;Âûáèðàåì ïàëèòðó 4 (128-159), ñòàðøèå ïîëóáàéòû
COLP4:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$8E00 ;Âûáèðàåì ïàëèòðó 4 (128-159), ìëàäøèå ïîëóáàéòû
COLP4B:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$AC00 ;Âûáèðàåì ïàëèòðó 5 (160-191), ñòàðøèå ïîëóáàéòû
COLP5:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$AE00 ;Âûáèðàåì ïàëèòðó 5 (160-191), ìëàäøèå ïîëóáàéòû
COLP5B:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$CC00 ;Âûáèðàåì ïàëèòðó 6 (192-223), ñòàðøèå ïîëóáàéòû
COLP6:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$CE00 ;Âûáèðàåì ïàëèòðó 6 (192-223), ìëàäøèå ïîëóáàéòû
COLP6B:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$EC00 ;Âûáèðàåì ïàëèòðó 7 (224-255), ñòàðøèå ïîëóáàéòû
COLP7:
DC.W $180,$000,$182,$000.... è ò.ä.
DC.W $106,$EE00 ;Âûáèðàåì ïàëèòðó 7 (224-255), ìëàäøèå ïîëóáàéòû
COLP7B:
DC.W $180,$000,$182,$000.... è ò.ä.
*******************************************************************************
Bplmod:  AGA ðåæèìàõ ìîäóëü îáû÷íî òàêîé-æå, êàê è â íîðìàëüíîì ðåæèìå ìèíóñ
8. Òàê, åñëè îáû÷íûé ìîäóëü = 0, òî agamodulo = -8. (Åñëè âû èñïîëüçóåòå
FMODE=3!), åñëè âû èñïîëüçóåòå FMODE =2, òîãäà ìîäóëü = -4 .
*******************************************************************************
Ñïðàéòû:
Ðàçðåøåíèå ñïðàéòà èçìåíÿåòñÿ èñïîëüçîâàíèåì áèò 7 è 6 (SPRES0-1) ðåãèñòðà
$0106 (BPLCON3)
Áèò 7 | áèò 6 | Ðàçðåøtybt
------+-------+-----------
0 | 0 | ECS ïî óìîë÷àíèþ (Lo-res/Hi-res = 140ns, Superhires = 70ns)
0 | 1 | Âñåãäà lowres (140ns)
1 | 0 | Âñåãäà hireres (70ns)
1 | 1 | Âñåãäà superhires (35ns)
--------------------------
(70ns ñïðàéòû íå ìîãóò áûòü äîñòóïíû åñëè áèò lace â BPLCON0 íå óñòàíîâëåí )
*******************************************************************************
Äëÿ óñòàíîâêè øèðèíû ñïðàéòîâ, ðàâíîé 32 è 64 áèòà èñïîëüçóþòñÿ áèòû 3 (SPAGEM)
è 2(SPR32) ðåãèñòðà $01FC(FMODE). Ôîðìàò ñïðàéòà (â ÷àñòíîñòè óïðàâëÿþùèå
ñëîâà) ðàçëè÷åí äëÿ êàæäîé øèðèíû.
Áèò 3 | áèò 2 | Øèðèíà | Óïðàâëÿþùèå Ñëîâà
------+-------+-------------+------------------------------------------
0 | 0 | 16 ïèêñåëåé | 2 ñëîâà (íîðìàëüíûå)
1 | 0 | 32 ïèêñåëÿ | 2 äëèííûõ ñëîâà
0 | 1 | 32 ïèêñåëÿ | 2 äëèííûõ ñëîâà
1 | 1 | 64 ïèêñåëÿ | 2 äâîéíûõ äëèííûõ ñëîâà (4 äëèííûõ ñëîâà)
-----------------------------------------------------------------------
Áîëåå øèðîêèå ñïðàéòû íå äîñòóïíû íè êàêèì îáðàçîì. Copper ÷èòàåò ñïðàéò ëèñòû
ïî ðàçíîìó, â çàâèñèìîñòè îò øèðèíû âàøåãî ñïðàéòà.
Àäðåñ ñïðàéòà, øèðèíîé 16 ïèêñåëåé äîëæåí áûòü êðàòåí 2
Àäðåñ ñïðàéòà, øèðèíîé 32 ïèêñåëåé äîëæåí áûòü êðàòåí 4
Àäðåñ ñïðàéòà, øèðèíîé 64 ïèêñåëåé äîëæåí áûòü êðàòåí 16
×òåíèå óïðàâëÿþøèõ ñëîâ ñïðàéòà, øèðèíîé 16 ïèêñåëåé
ñëîâî C1, ñëîâî C2
ñëîâî A1, ñëîâî B1
.
.
.
ñëîâî An, ñëîâî Bn
$0000 0000
C1=ïåðâîå óïðàâëÿþùåå ñëîâî
C2=âòîðîå óïðàâëÿþùåå ñëîâî
Ai è Bi îáúåäèíÿÿñü ïî OR ôîðìèðóþò èçîáðàæåíèå ñïðàéòà.
×òåíèå óïðàâëÿþøèõ ñëîâ ñïðàéòà, øèðèíîé 32 ïèêñåëÿ
CNOP 0,8 ;âûðàâíèâàåì ïî 64 áèòàì
SPRITE32: ;Ïðèìåð AGA ñïðàéòà, øèðèíîé 32 ïèêñåëÿ
VSTART:
dc.b 0 ;äëèííîå C1
HSTART:
DC.b 0
DC.W 0
VSTOP:
DC.b 0,0 ;äëèííîå C2
dc.w 0
dc.L %00000000000000111100000000000000,%0000000000001000000000000000000;sprite
dc.L %00000000000011111111000000000000,%0000000000010111100000000000000
äëèííîå ñëîâî A3, äëèííîå ñëîâî B3
.
.
.
äëèííîå ñëîâî An, äëèííîå ñëîâî Bn
DC.W 0,0,0,0 ;êîíåö âïðàéòà
C1=ïåðâîå óïðàâëÿþùåå äëèííîå ñëîâî
Ïåðâîå óïðàâëÿþùåå ñëîâî ñîäåðæèòñÿ â ñòàðøåì ñëîâå C1. Ìëàäøåå ñëîâî C1
äîëæíî ñîäåðæàòü âòîðîå óïðàâëÿþùåå ñëîâî.
C2=âòîðîå óïðàâëÿþùåå äëèííîå ñëîâî
Âòîðîå óïðàâëÿþùåå ñëîâî ñîäåðæèòñÿ â ñòàðøåì ñëîâå C2. Ìëàäøåå ñëîâî C2
äîëæíî áûòü ðàâíî $0000
Îáùèé ïîðÿäîê ðàñïîëîæåíèÿ óïðàâëÿþùèõ ñëîâ:
Ñ1 Ñ2 Ñ2 00
Ai è Bi îáúåäèíÿÿñü ïî OR ôîðìèðóþò èçîáðàæåíèå ñïðàéòà.
×òåíèå óïðàâëÿþøèõ ñëîâ ñïðàéòà, øèðèíîé 64 ïèêñåëÿ
CNOP 0,8 ;âûðàâíèâàåì ïî 64 áèòàì
SPRITE64: ;Ïðèìåð AGA ñïðàéòà, øèðèíîé 32 ïèêñåëÿ
VSTART:
DC.B 0 ;äâîéíîå äëèííîå ñëîâî C1
HSTART:
DC.B 0
DC.W 0
DC.L 0
VSTOP:
DC.B 0,0 ;äâîéíîå äëèííîå ñëîâî C2
DC.W 0
DC.L 0
äâîéíîå äëèííîå ñëîâî A1, äâîéíîå äëèííîå ñëîâî B1
.
.
.
äâîéíîå äëèííîå ñëîâî An, äâîéíîå äëèííîå ñëîâî Bn
DC.W 0,0,0,0,0,0,0,0 ;êîíåö ñïðàéòà
C1=ïåðâîå óïðàâëÿþùåå äâîéíîå äëèííîå ñëîâî
C1=W3:W2:W1:W0 (Wi=ñëîâà)
W3 ïåðâîå óïðàâëÿþùåå ñëîâî
W2 è W1 âòîðîå óïðàâëÿþùåå ñëîâî
C2=âòîðîå óïðàâëÿþùåå äâîéíîå äëèííîå ñëîâî
C2=W3:W2:W1:W0 (Wi=ñëîâà)
W3 is âòîðîå óïðàâëÿþùåå ñëîâî
Îáùèé ïîðÿäîê ðàñïîëîæåíèÿ óïðàâëÿþùèõ ñëîâ:
Ñ1 Ñ2 Ñ2 00 Ñ2 00 00 00
Ai è Bi îáúåäèíÿÿñü ïî OR ôîðìèðóþò èçîáðàæåíèå ñïðàéòà.
***************************************************************************
Ïåðåìåùåíèå ñïðàéòîâ ñ òî÷íîñòüþ 1/4 ïèêñåëÿ:
Èñïîëüçóéòå áèòû 3 è 4 âòîðîãî ñëîâà óïðàâëÿþùåãî ñëîâà ñïðàéòà äëÿ óñòàíîâêè
ïîçèöèè ìïðàéòà ñ òî÷íîñòüþ 1/4 lowres ïèêñåëÿ (êàæäûé ïèêñåëü â SuperHires ):
Áèò 0 âòîðîãî óïðàâëÿþùåãî ñëîâà = áèò 2 ãîðèçîíòàëüíîé ïîçèöèè.
Áèò 3 âòîðîãî óïðàâëÿþùåãî ñëîâà = áèò 0 ãîðèçîíòàëüíîé ïîçèöèè.
Áèò 4 âòîðîãî óïðàâëÿþùåãî ñëîâà = áèò 1 ãîðèçîíòàëüíîé ïîçèöèè.
Ïîçèöèÿ ñïðàéòà òåïåðü çàêîäèðîâàíà 11 áèòàìè.
***************************************************************************
Èçìåíåíèå ïàëèòðû ñïðàéòîâ:
Âñå ñïðàéòû èñïîëüçóþò äëÿ èçîáðàæåíèÿ îäíó 16 öâåòíóþ ïàëèòðó. Ðåçóëüòàò
ïîëó÷àåòñÿ ñëåäóþùèé:
Ñïðàéòû | Öâåòà
------------------
0-1 | 00-03
2-3 | 04-07
4-5 | 08-11
6-7 | 12-15
------------------
Ðàíüøå âû ìîãëè èñïîëüçîâàòü òîëüêî ÎÄÍÓ ïàëèòðó äëÿ âñåõ èçîáðàæàåìûõ
ñïðàéòîâ. Ýòà ïàëèòðà ðàñïîëàãàëàñü â öâåòîâûõ ðåãèñòðàõ 15 ê öâåòó 31. Òåïåðü
âû ìîæåòå èçîáðàæàòü íå÷åòíûå è ÷åòíûå ñïðàéòû â ðàçíûõ ïàëèòðàõ.
Ïîñêîëüêó äîñòóïíî 256 öâåòîâ, ýòî äàåò 16 ïàëèòð ïî 16 öâåòîâ â êàæäîé. Âû
ìîæåòå âûáðàòü ïàëèòðó, êîòîðàÿ áóäåò èñïîëüçîâàòüñÿ äëÿ èçîáðàæåíèÿ íå÷åòíûõ
ñïðàéòîâ è êîòîðàÿ áóäåò èñïîëüçîâàòüñÿ äëÿ èçîáðàæåíèÿ ÷åòíûõ ñïðàéòîâ. Öâåòà,
èñïîëüçóåìûå ñïðàéòàìè â 16 öâåòíîé ïàëèòðå òàêèå-æå êàê îáû÷íî:
Ñïðàéòû | Öâåòà
-----------------------------------------
0 | 00-03 ïàëèòðû ÷åòíûõ ñïðàéòîâ
2 | 04-07 ïàëèòðû ÷åòíûõ ñïðàéòîâ
4 | 08-11 ïàëèòðû ÷åòíûõ ñïðàéòîâ
6 | 12-15 ïàëèòðû ÷åòíûõ ñïðàéòîâ
-----------------------------------------
1 | 00-03 ïàëèòðû íå÷åòíûõ ñïðàéòîâ
3 | 04-07 ïàëèòðû íå÷åòíûõ ñïðàéòîâ
5 | 08-11 ïàëèòðû íå÷åòíûõ ñïðàéòîâ
7 | 12-15 ïàëèòðû íå÷åòíûõ ñïðàéòîâ
-----------------------------------------
Áèòû 4 - 7 (ESPRM) ðåãèñòðà BPLCON4 ($DFF010C) èñïîëüçóþòñÿ äëÿ âûáîðà ïàëèòðû,
èñïîëüçóåìîé äëÿ èçîáðàæåíèÿ ÷åòíûõ ñïðàéòîâ, áèòû 0 - 3 (OSPRM) ðåãèñòðà
BPLCON4 ($DFF010C) èñïîëüçóþòñÿ äëÿ âûáîðà ïàëèòðû, èñïîëüçóåìîé äëÿ
èçîáðàæåíèÿ íå÷åòíûõ ñïðàéòîâ,
áèò 3 | áèò 2 | áèò 1 | áèò 0 | Íå÷åòíûå ñïðàéòû
áèò 7 | áèò 6 | áèò 5 | áèò 4 | ×åòíûå ñïðàéòû
------+-------+-------+-------+------------------------------------------
0 | 0 | 0 | 0 | $0180/ïàëèòðà 0 (öâåò 0)
0 | 0 | 0 | 1 | $01A0/ïàëèòðà 0 (öâåò 15)
0 | 0 | 1 | 0 | $0180/ïàëèòðà 1 (öâåò 31)
0 | 0 | 1 | 1 | $01A0/ïàëèòðà 1 (öâåò 47)
0 | 1 | 0 | 0 | $0180/ïàëèòðà 2 (öâåò 63)
0 | 1 | 0 | 1 | $01A0/ïàëèòðà 2 (öâåò 79)
0 | 1 | 1 | 0 | $0180/ïàëèòðà 3 (öâåò 95)
0 | 1 | 1 | 1 | $01A0/ïàëèòðà 3 (öâåò 111)
1 | 0 | 0 | 0 | $0180/ïàëèòðà 4 (öâåò 127)
1 | 0 | 0 | 1 | $01A0/ïàëèòðà 4 (öâåò 143)
1 | 0 | 1 | 0 | $0180/ïàëèòðà 5 (öâåò 159)
1 | 0 | 1 | 1 | $01A0/ïàëèòðà 5 (öâåò 175)
1 | 1 | 0 | 0 | $0180/ïàëèòðà 6 (öâåò 191)
1 | 1 | 0 | 1 | $01A0/ïàëèòðà 6 (öâåò 207)
1 | 1 | 1 | 0 | $0180/ïàëèòðà 7 (öâåò 223)
1 | 1 | 1 | 1 | $01A0/ïàëèòðà 7 (öâåò 239)
-------------------------------------------------------------------------
******************** ÝÒÎ ÂÀÆÍÎ ************************
Áèòïëàíû, ñïðàéòû è êîïïåðëèñòû äîëæíû áûòü â íåêîòîðûõ ñëó÷àÿõ âûðîâíåíû ïî
ãðàíèöàì 64 áèò. Íàïðèìåð äëÿ òîãî, ÷òîáû èñïîëüçîâàòü 64õ áèòíóþ âûáîðêó èëè
64õ áèòíûé ñêðîëëèíã áèòïëàíîâ.
Ýòî òàêæå ïîäíèìàåò äðóãóþ ïðîáëåìó. Âû áîëüøå íå ìîæåòå íåïîñðåäñòâåííî
èñïîëüçîâàòü AllocMem() äëÿ âûäåëåíèÿ ïàìÿòè äëÿ áèòïëàíîâ èëè ñïðàéòîâ.
Ìîæíî äåëàòü òàê: èñïîëüçóÿ AllocMem (ðàçìåð_áèòïëàíîâ + 8) è âû÷èñëÿÿ
êîëè÷åñòâî áàéò, êîòîðûå íóæíî ïðîïóñòèòü â íà÷àëå, ÷òîáû äàòü âûðàâíèâàíèå ïî
64 áèòàì (íå çàáûâéòå î òîì, ÷òî ðàçìåð áèòïëàíà ìîæåò áûòü íå êðàòåì 64 áèòàì,
ïîýòîìó âûäåëÿéòå ïàìÿòü äëÿ êàæäîãî áèòïëàíà îòäåëüíî èëè óäîñòîâåðüòåñü, ÷òî
ðàçìåð áèòïëàíà êðàòåí 64 áèòàì). Äðóãîé ïóòü - ýòî èñïîëüçîâàíèå íîâîé ôóíêöèè
V39 AllocBitMap(). Òðåòèé ïóòü - ýòî íåïîñðåäñòâåííîå âûðàâíèâàíèå â èñõîäíîì
òåêñòå ïðîãðàììû. Íàïðèìåð:
CNOP 0,8
sprite incbin "myspritedata"
CNOP 0,8
áèòplane incbin "myáèòplane"
è ò.ä.
ÅÑËÈ ÂÛ ÇÀÁÛËÈ ÂÛÐÀÂÍßÒÜ ÏÎ 64 ÁÈÒÀÌ, ÈÇÎÁÐÀÆÅÍÈÅ ÁÓÄÅÒ ÏÎßÂËßÒÜÑß ÎÁÐÅÇÀÍÍÎÅ.
Îáùàÿ îøèáêà - óêàçàòåëè íà íåæåëàòåëüíûå ñïðàéòû óêàçûâàþùèå íà $0. Åñëè
äëèííîå ñëîâî ïî ýòîìó àäðåñó íå ðàâíî íóëþ, âû ïîëó÷èòå íåñêîëüêî ïðåêðàñíî
ñìîòðÿùèõñÿ ñïðàéòîâ â ñàìûõ íåïðåäñêàçóåìûõ ìåñòàõ.
Ïðàâèëüíûé ñïîñîá èçáàâëåíèÿ îò ñïðàéòîâ ñîñòoèò â òîì, ÷òîáû óêàçûâàòü íà
àäðåñ êîòîðûé íàâåðíÿêà ñîäåðæèò - $00000000.) (0.l), à ñ AGA âû ìîæåòå
óêàçûâàòü íà ×ÅÒÛÐÅ äëèííûõ ñëîâà, ðàâíûõ 0, âûðîâíåííûõ ïî 64 áèòàì.
***************************************************************************
ÈÑÏÎËÜÇÎÂÀÍÈÅ ÐÅÆÈÌÀ SUPERHIRES
×òîáû èñïîëüçîâàòü ðåæèì SuperHires (Øèðèíîé 1280 ïèêñåëåé), ïðîñòî âêëþ÷èòå
áèò 6 (SHRES) èç ðåãèñòðà BPLCON0 ($0100)
áèò 6 | Ðåæèì SuperHires
------------------------
0 | Âûêëþ÷åí
1 | Âêëþ÷åí
------------------------
***************************************************************************
ÏÅÐÅÊËÞ×ÅÍÈÅ ÏÀËÈÒÐÛ
Âû ìîæåòå ïåðåêëþ÷àòü öâåòà â ïàëèòðå. Îïåðàöèÿ ïåðåêëþ÷åíèÿ ìåæäó öâåòîì A è B
îïðåäåëÿåòñÿ ñëåäóþùèì îáðàçîì:
- Ñîäåðæàíèå öâåòîâûõ ðåãèñòðîâ íå èçìåíÿþòñÿ
- Âñå, ÷òî èçîáðàæàëîñü öâåòîì A òåïåðü èçîáðàæàåòñÿ öâåòîì B, è âñå, ÷òî
èçîáðàæàëîñë öâåòîì B òåïåðü èçîáðàæàåòñÿ ñ öâåòîì À
Äëÿ ïåðåêëþ÷åíèÿ èñïîëüçóþòñÿ áèòû 8-15 (BPLAM) ðåãèñòðà BPLCON4 ($DFF10C):
Áèò 15 14 13 12 11 10 09 08
Èìÿ S7 S6 S5 S4 S3 S2 S1 S0
Ïðè âêëþ÷åíèè áèòà Sn, æåëåçî íà÷èíàåò äåéñòâîâàòü ñëåäóþùèì îáðàçîì:
- Ãðóïïà èç 2^n öâåòîâ, íà÷èíàÿ îò öâåòà 00 äî öâåòà (2^n)-1 ìåíÿåòñÿ ìåñòàìè ñ
ãðóïïîé èç 2^n öâåòîâ, íà÷èíàÿ îò öâåòà 2^n äî öâåòà 2^n+(2^n)-1
- Ãðóïïà èç 2^n öâåòîâ, íà÷èíàÿ îò öâåòà 2*2^n äî öâåòà 2*2^n+(2^n)-1 ìåíÿåòñÿ
ìåñòàìè ñ ãðóïïîé èç 2^n öâåòîâ îò öâåòà 3*2^n äî öâåòà 3*2^n+(2^n)-1
- ...
Îïåðàöèÿ çàêàí÷èâàåòñÿ, ïðè äîñòèæåíèè êîíöà 256 öâåòíîé ïàëèòðû.
Íàïðèìåð:
Âûáðàí áèò Sn=1. Íà ðèñóíêå ïîêàçàíî, ÷òî ïðåäñòàâëÿåò ñîáîé ïàëèòðà äî è
ïîñëå ïåðåêëþ÷åíèÿ. Êîïïåðëèñò àáñîëþòíî íå èçìåíÿåòñÿ:
Ïåðåä | Ïîñëå
---------------------------------
öâåò 00 | öâåò 02
öâåò 01 | öâåò 03
öâåò 02 | öâåò 00
öâåò 03 | öâåò 01
öâåò 04 | öâåò 06
öâåò 05 | öâåò 07
öâåò 06 | öâåò 04
öâåò 07 | öâåò 05
... | ...
 ýòîì ïðèìåðå öâåòà ïîìåíÿëèñü ìåñòàìè, èñïîëüçóÿ ãðóïïû èç 2^1=2 öâåòîâ
Âû íå ìîæåòå ïåðåêëþ÷èòü ìåæäó ñîáîé äâà öâåòà. Åñëè âû èçìåíÿåòå ëþáîé áèò Sn,
òî ýòî âîçäåéñòâóåò íà öåëóþ ïàëèòðó.
Îïåðàöèè ïåðåêëþ÷åíèÿ ìîãóò oáúåäèíÿòüñÿ. Åñëè âûáðàíî áîëüøå ÷åì îäèí áèò Sn,
îïåðàöèè ïåðåêëþ÷åíèÿ äëÿ êàæäîãî áèòà áóäóò âûïîëíÿòüñÿ ïîñëåäîâàòåëüíî,
íà÷èíàÿ ñ S0.
Íàïðèìåð:
BPLCON4 ($DFF10C) ñîäåðæèò $0500. Âëþ÷åíû áèòû S0 è S2. Ïåðâîå ïåðåêëþ÷åíèå
èñïîëüçóåò ãðóïïû èç 2^0 öâåòîâ, à âòîðîå èç 2^2 öâåòîâ:
Ïåðåä | Ïîñëå S0 | Ïîñëå S2
---------------------------------------------
öâåò 00 | öâåò 01 | öâåò 05
öâåò 01 | öâåò 00 | öâåò 04
öâåò 02 | öâåò 03 | öâåò 07
öâåò 03 | öâåò 02 | öâåò 06
öâåò 04 | öâåò 05 | öâåò 01
öâåò 05 | öâåò 04 | öâåò 00
öâåò 06 | öâåò 07 | öâåò 03
öâåò 07 | öâåò 06 | öâåò 02
öâåò 08 | öâåò 09 | öâåò 13
öâåò 09 | öâåò 08 | öâåò 12
öâåò 10 | öâåò 11 | öâåò 15
öâåò 11 | öâåò 10 | öâåò 14
öâåò 12 | öâåò 13 | öâåò 09
öâåò 13 | öâåò 12 | öâåò 08
öâåò 14 | öâåò 15 | öâåò 11
öâåò 15 | öâåò 14 | öâåò 10
... | ... | ...
***************************************************************************
Ðåæèì VGA/PRODUCTIVITY 640x480 áåç èíòåðëåéñà
Ýòîò ðåæèì ïîääåðæèâàåòñÿ íà Àìèãå íà÷èíàÿ ñ ïåðâûõ ECS ìàøèí è òðåáóåò íàëè÷èÿ
ìóëüòèñêàí ìîíèòîðà.
 AGA ÷èïñåòå ýòîò ðåæèì çíà÷èòåëüíî óñîâåðøåíñòâîâàí: òåïåðü â ýòîì ðåæèìå
ìîæíî èñïîëüçîâàòü 256-òè öâåòíûå è HAM8 ýêðàíû.
NTSC (525 ñòðîê, 227.5 òàêòîâ íà ñòðîêó)
PAL (625 ñòðîê, 227.5 òàêòîâ íà ñòðîêó)
VGA (525 ñòðîê, 114.0 òàêòîâ íà ñòðîêó)
Ïðîãðàììèðóåìàÿ ñèíõðîíèçàöèÿ îñóùåñòâëÿåòñÿ ÷åðåç 5 íîâûõ óñîâåðøåíñòâîâàííûõ
ðåãèñòðîâ Agnus:
VSSTRT W A Âåðòèêàëüíàÿ ïîçèöèÿ íà÷àëà VSYNC.
VSSTOP W A Âåðòèêàëüíàÿ ïîçèöèÿ îñòàíîâêè VSYNC
HSSTRT W A Ãîðèçîíòàëüíàÿ ïîçèöèÿ íà÷àëà HSYNC.
HSSTOP W A Ãîðèçîíòàëüíàÿ ïîçèöèÿ îñòàíîâêè HSYNC
HCENTER W A Ãîðèçîíòàëüíàÿ ïîçèöèÿ Vsync ïðè èíòåðëåéñå
Óäîâëåòâîðèòåëüíûé ðåçóëüòèðóþùèé ñèãíàë ïîëó÷àåòñÿ ïðè óñòàíîâêå HCENTER íà
ïîëîâèíó ãîðèçîíòàëüíîé ñòðîêè ñ HSSTRT, à HBSTOP íà (HSSTOP-HSSTRT) ïåðåä
HCENTER è HBSTRT íà (HSSTOP-HSSTRT) ïåðåä HSSTRT.
Ïðîãðàììèðóåìûé îáðàòíûé õîä âûïîëíÿåòñÿ ÷åðåç ÷åòûðå íîâûõ ðåãèñòðà ECS Agnus:
HBSTRT W A Ãîðèçîíòàëüíàÿ ïîçèöèÿ íà÷àëà HBLANK
HBSTOP W A Ãîðèçîíòàëüíàÿ ïîçèöèÿ îñòàíîâà HBLANK
VBSTRT W A Âåðòèêàëüíàÿ ïîçèöèÿ íà÷àëà VBLANK
VBSTOP W A Âåðòèêàëüíàÿ ïîçèöèÿ îñòàíîâà VBLANK
Äëÿ òîãî, ÷òîáû ñìåíèòü ãîðèçîíòàëüíóþ ÷àñòîòó ñ 15KHz (TV, ìîíèòîð 1084) íà 31
KHz íåîáõîäèìî èçìåíèòü çíà÷åíèå ðåãèñòðà BEAMCON0 ($dff1dc) è óñòàíîâèòü
ïðàâèëüíûå çíà÷åíèÿ â äðóãèõ ðåãèñòðàõ.
Ïðèìåð:
LEA $DFF000,A0
MOVE.W #%0001101110001000,$1DC(A0) ;BEAMCON0
;3 - Êîìïëåêñíîå ãàøåíèå íà âûõîäå CSY
;7 - Âêëþ÷åíèå ïðîãðàììèðóåìîãî ñ÷åò÷èêà ëó÷à
;8 - Âêëþ÷åíèå ïðîãðàììèðóåìîé ãîðèçîíòàëüíîé ñèíõðîíèçàöèè
;9 - Âêëþ÷åíèå ïðîãðàììèðóåìîé âåðòèêàëüíîé ñèíõðîíèçàöèè
;11- Âûêëþ÷åíèå ïåðåêëþ÷àòåëÿ ÄËÈÍÍÀß/ÊÎÐÎÒÊÀß ñòðîêà
;12- Âêëþ÷åíèå ïðîãðàììèðóåìîãî îáðàòíîãî õîäà ëó÷à.
MOVE.W #$71,$1C0(A0) ;HTOTAL - íàèáîëüøåå çíà÷åíèå ñ÷åò÷èêà ãîðèç. ëèíèé
MOVE.W #8,$1C4(A0) ;HBSTRT - Ïîçèöèÿ ãîðèç ëèíèè äëÿ HBLANK START
MOVE.W #14,$1DE(A0) ;Íà÷àëî ãîðèçîíòàëüíîé ñèíõðîíèçàöèè
MOVE.W #$1C,$1C2(A0) ;Ïîçèöèÿ ãîðèç ëèíèè äëÿ HSYNC STOP
MOVE.W #$1E,$1C6(A0) ;Ïîçèöèÿ ãîðèç ëèíèè äëÿ HBLANK STOP
MOVE.W #$46,$1E2(A0) ;Ãîðèç. ïîçèöèÿ äëÿ VSYNC ïðè èíòåðëåéñå.
MOVE.W #$20C,$1C8(A0) ;VTOTAL - Íàèáîëüøåå çíà÷åíèå ñ÷åò÷èêà âåðò ëèíèé.
MOVE.W #0,$1CC(A0) ;Âåðòèêàëüíàÿ ëèíèÿ íà÷àëà âåðò îáðàòíîãî õîäà
MOVE.W #3,$1E0(A0) ;Íà÷àëî âåðò ñèíõðîíèçàöèè
; MOVE.W #$200,$1E4(A0)
MOVE.W #$100,$1E4(A0)
MOVE.W #5,$1CA(A0) ;Ïîçèöèÿ âåðò ëèíèè äëÿ VSYNC STOP
MOVE.W #$1D,$1CE(A0) ;Âåðò. ëèíèÿ äëÿ VBLANK STOP
MOVE.W #%00010010,$104(A0) ;
MOVE.W #%0000110000100001,$106(A0) ; 0 - Âêëþ÷åíèå âíåøíåãî ãàøåíèÿ
; 5 - Ãàøåíèå áîðäþðà
; 10-11 Fix AGAøíîãî äóàë-ïëåéôèëä.
MOVE.W #$1241,$100(A0) ;Ðåæèì VGA ñ 2 öâåòàìè
; MOVE.W #$1245,$100(A0) ;Íà AGA ìàøèíå òðåáóåò áèòïëàí,
;íî çàïîìíèòå, ÷òî íàäî ïîìåñòèòü $3 â $dff1fc åñëè âàì
;íàäî áîëåå 2 öâåòîâ (Ñòàðûé ECS ðåæèì)
Çàòåì óñòàíîâèòå óêàçàòåëü íà âàø êîïïåðëèñò. Çàïîìíèòå, ÷òî áèò 0 ðåãèñòðà
$dff100 äîëæåí áûòü âêëþ÷åí äëÿ âêëþ÷åíèÿ âñåõ âîõìîæíîñòåé ECS è AGA, à åñëè
âàì íàäî áîëåå 4 öâåòîâ, âû ÄÎËÆÍÛ óñòàíîâèòü áèòû 0 è 1 ðåãèñòðà $dff1fc è
âûðîâíÿòü áèòïëàíû ïî 64ì áèòàì. Óäà÷è âàì, è çàïîìíèòå, ÷òî âûáîð ìîíèòîðà
äîëæåí áûòü îôîðìëåí â âèäå îêíà èëè êàêîãî-íèáóäü äðóãîãî ÄÐÓÆÅÑÒÂÅÍÍÎÃÎ Ê
ÑÈÑÒÅÌÅ ðåêâåñòåðà
Ïðèìåð êîïïåðëèñòà äëÿ AGA (ïðîâåðåíî íà À1200+VGA ìîíèòîð)
COPPERLIST: ;Íå çàáóäüòå óñòàíîâèòü ñíà÷àëà ðåãèñòðû ECS !
; Óêàçàòåëè ñïðàéòîâ
dc.l $C01FFFE
dc.l $1800F00
BPLP:
dc.l $E00000 ;Óêàçàòåëè áèòïëàíîâ
dc.l $E20000 ;óêàçûâàþ íà êàðòèíêó 640x480
dc.l $E40000 ;òàêæå, êàê â èíòåðëåéñå
dc.l $E60000
dc.l $E80000
dc.l $EA0000
dc.l $EC0000
dc.l $EE0000
DC.W $180,0 ;ìîäóëü
DC.W $10A,0
dc.W $8E,$1c45 ;diwstrt
dc.W $90,$ffe5 ;diwstop
dc.W $92,$0018 ;ddfstrt
dc.W $94,$0068 ;ddfstop
dc.w $1e4,$100
;Çäåñü çàäàåòñÿ ïàëèòðà... òàêàÿ æå, êàê è íîðìàëüíàÿ ïàëèòðà íà AGA
dc.w $1fc,$8003
DC.W $100,$1241 ;bplcon0
dc.l $FFFFFFFE ;êîíåö êîïïåðëèñòà
dc.l $FFFFFFFE
***************************************************************************
Èñïîëüçîâàíèå ôóíêöèè AllocBitmap
allocbitap "graphics.library" V39 íîâàÿ ôóíêöèÿ äëÿ çàõâàòà áèòìàïîâ.
AllocbitMap -- Çàõâàòûâàåò áèòìàï è ïðèêðåïëÿåò ê íåìó áèòïëàíû. (V39)
bitmap=AllocbitMap(sizex,sizey,depth, flags, friend_bitmap)
-918 d0 d1 d2 d3 a0
struct bitMap *AllocbitMap(ULONG,ULONG,ULONG,ULONG, struct bitMap *);
Çàõâàòûâàåò è èíèöèàëèçèðóåò ñòðóêòóðó áèòìàïîâ. Óñòàíàâëèâàåò óêàçàòåëè íà
ïëàíû.
ÍÀ ÂÕÎÄÅ:
sizex = øèðèíà (â ïèêñåëÿõ) áèòïëàíà.
sizey = âûñîòà (â ïèêñåëÿõ).
depth = ãëóáèíà (÷èñëî áèòïëàíîâ äëÿ çàõâàòà)
flags = BMF_CLEAR - î÷èñòêà áèòìàïà.
BMF_DISPLAYABLE - áèòìàï íà AGA ìàøèíàõ ïîêàçûâàåòñÿ âî âñåõ ðåæèìàõ
BMF_INTERLEAVED - èíòåðëåéâíûå áèòïëàíû.
friend_áèòmap = Óêàçàòåëü íà äðóãîé áèòïëàí èëè NULL. Åñëè óêàçàòåëü
ïðèñóòñòâóåò, áèòìàï âûäåëÿåòñÿ òàê, ÷òî áëèò ìåæäó äâóìÿ áèòìàïàìè óïðîùàåòñÿ
Äëÿ îñâáîæäåíèÿ çàõâà÷åííîãî áèòìàïà èñïîëüçóéòå FREEbitMAP(V39)
FreeáèòMap -- îñâáîæäåíèå áèòìàïà, çàõâà÷åííîãî AllocbitMap
FreeáèòMap(bm)
-924 a0
VOID FreebitMap(struct bitMap *)
îñâáîæäàåò áèòìàï è âñå ïðèêðåïëåííûå áèòïëàíû.
-------------------------------------------------------------------------------
Èçâèíèòå çà âîçìîæíûå îïå÷àòêè ïî õîäó òåêñòà, íàäåþñü, îíè íå ñèëüíî ïîìåøàëè
Âàì îñâîèòü íåêîòîðûå ïðåìóäðîñòè ïðîãðàììèðîâàíèÿ AGA. Äî âñòðå÷è â ñëåäóþùåì
íîìåðå!